Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

128
Visualizações
Dividir una cadena como "__f__g_f_" Javascript

Digamos que tengo una cadena __f__g_f_

¿Cómo puedo lograr dividirlo en una matriz como ['__','f','__','g','_','f','_']

almost 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Esto debería hacer:

 const str = '__f__g_f_'

const parts = str.split(/([az]+)/)

console.log(parts)

almost 4 years ago · Santiago Trujillo Relatório

0

En lugar de usar .split() , puede usar .match() con un grupo coincidente en la expresión regular, le dará una matriz de todas sus coincidencias deseadas.

 const str = '__f__g_f_'
const parts = str.match(/(_+)|([az]+)/g)
console.log(parts);
 [
 "__",
 "f",
 "__",
 "g",
 "_",
 "f",
 "_"
]

almost 4 years ago · Santiago Trujillo Relatório

0

La división funciona con una complejidad de tiempo O(N) para que pueda escribir su propia implementación y sea más legible y fácil de mantener

 const s = "__f__g_f_"
const array = []

let buffer = ""
for (let i = 0; i < s.length; i++) {

 if (s[i] === "_") {
 buffer += s[i]
 continue
 }

 if (buffer.length > 0) {
 array.push(buffer)
 buffer = ""
 }
 array.push(s[i])
}
if (buffer.length > 0) {
 array.push(buffer)
}
console.log(array)

Editar:

(/([az]+)/) es elegante pero siempre estará en la piel de otros devops. ¿Qué significa (/([az]+)/) de un vuezo? Regex es como un programa compilado, código de máquina. a menos que todos los devops sean expertos en expresiones regulares, no están autodocumentados. Requieren ser comentados. Y puede haber errores en ellos, ¿cómo puedes confiar en /([az]+)/ si realmente funciona sin ejecutar el código? Ver código legible por humanos siempre es preferible. Y finalmente, puede que se sorprenda de que las expresiones regulares pueden tener una complejidad de tiempo extraña, a veces saltan a exponencial. No sabes cómo se implementan. Aquí, una implementación simple, simple y legible es 100% más rápida que la expresión regular.

 console.time('regex');
for (let i = 0; i < 100_000_000; i++) {
 const str = '__f__g_f_'
 const parts = str.split(/([az]+)/)
}
console.timeEnd("regex")


console.time('plain_fast');

for (let i = 0; i < 100_000_000; i++) {
 const s = "__f__g_f_"
 const array = []

 let buffer = ""
 for (let i = 0; i < s.length; i++) {

 if (s[i] === "_") {
 buffer += s[i]
 continue
 }

 if (buffer.length > 0) {
 array.push(buffer)
 buffer = ""
 }
 array.push(s[i])
 }
 if (buffer.length > 0) {
 array.push(buffer)
 }
}
console.timeEnd("plain_fast")

 regex: 10540.700ms
plain_fast: 4556.500ms
almost 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda